package com.christina.service.domain.user;

import com.christina.dto.RegisterRequest;
import com.christina.entity.User;
import com.christina.engine.context.model.UserContext;

/**
 * 用户领域服务接口
 * 
 * @author Christina
 */
public interface UserDomainService {
    
    /**
     * 用户注册
     * 
     * @param request 注册请求
     * @return 注册的用户
     */
    User register(RegisterRequest request);
    
    /**
     * 用户登录
     * 
     * @param username 用户名
     * @param password 密码
     * @return JWT令牌
     */
    String login(String username, String password);
    
    /**
     * 根据用户名获取用户
     * 
     * @param username 用户名
     * @return 用户信息
     */
    User getByUsername(String username);
    
    /**
     * 更新用户偏好
     * 
     * @param userId 用户ID
     * @param preferences 偏好设置
     * @return 更新结果
     */
    boolean updateUserPreferences(Long userId, Object preferences);
    
    /**
     * 获取用户统计信息
     * 
     * @param userId 用户ID
     * @return 统计信息
     */
    Object getUserStatistics(Long userId);
    
    /**
     * 获取用户上下文
     * 
     * @param userId 用户ID
     * @return 用户上下文
     */
    UserContext getUserContext(Long userId);
    
    /**
     * 更新用户上下文
     * 
     * @param userContext 用户上下文
     * @return 更新结果
     */
    boolean updateUserContext(UserContext userContext);
}